/* default: 'ENABLE',
},
distribute_mode: {
    title: LANG('多账号分配'),
    items: [
        { id: DISTRIBUTE_MODE.EQUAL_DISTR, text: LANG('多账号一致'), desc: LANG('每个广告账户，都按定向包数*标题包数*素材组数生成广告') },
        { id: DISTRIBUTE_MODE.TARGET_DISTR, text: LANG('不同定向包'), desc: LANG('把定向包分配到不同广告账户创建广告，账户之间定向包不同') },
        { id: DISTRIBUTE_MODE.TITLE_DISTR, text: LANG('不同标题包'), desc: LANG('把标题包分配到不同广告账户创建广告，账户之间标题包不同') },
        { id: DISTRIBUTE_MODE.CREATIVE_DISTR, text: LANG('不同素材组'), desc: LANG('把素材包分配到不同广告账户创建广告，账户之间素材不同') }
    ],
    defualt: 1,
    defualt: [1],
},
add_mode: {
    title: LANG('创建方式'),
    items: [
        { id: 1, text: LANG('新建项目'), desc: LANG('计划按照分配规则分配到新建的项目中') },
        { id: 2, text: LANG('已有项目'), desc: LANG('计划按照分配规则分配到已有的项目中') },
    ],
    defualt: 1,
},
create_mode: {
    render: function(data, { accounts }) {
        return renderMultiMap(data, accounts, 'open_urls_map', 'open_urls', false);
    }
},
};

// 项目展示
const PlanFiledDesc = {
// -------新数据------
distribute_mode: {
    type: 'enum'
    type: 'array',
    title: "多账号分配",
    render: function(data) {
        const map = {
            1:'多账号一致',
            2:'不同定向包',
            3:'不同标题包',
            4:'不同素材组',
        }
        const list = [];
        if(_.isNumber(data)) {
            list.push(map[data]);
        }
        if(_.isArray(data)){
            for(let i = 0; i < data.length; i++) {
                list.push(map[data[i]]);
            }
        }
        return list.join('、');
    }
},
add_mode: {
    type: 'enum'
},
create_mode: {
    type: 'enum'
},
landing_type: {
    type: 'enum'
},
                if (value) {
                    html = getFieldDescHtml(enumDesc.title, value.text);
                }
            }
        } else if (fieldType === 'function' && descFieldMap[field].render) {
            const val = fieldConfig.render(data, param || {});
            if (val !== undefined) {
                html = getFieldDescHtml(fieldConfig.title, val);
            }
        } else if (fieldType === 'array') {
            html = getFieldDescHtml(descFieldMap[field].title, data[field].join(' '));
            const val = fieldConfig.render(data[field] || []);
            html = getFieldDescHtml(fieldConfig.title, val);
        }

        if (html) {
            descArr.push(html);
        }
    }
}

return descArr.join('');
} */

// if (child.getData && child.getDOM().is(":visible")) {
//     const d = child.getData();
//     // 合并到SubmitData
//     $.extend(submitData, d);
// }
// }
// });
// // 把各个模块数据封装到指定字段里面
// if (c.key) {
// $.extend(submitData, { [c.key]: { ...submitData }});
// }
// }		
// return submitData;
// },
// /**
// * 验证数据
// * @param {Object} data 要验证的数据
// * @returns {Boolean} 返回检查结果是否通过
// */
// validate: function(data) {
// const self = this;
// let pass = true;
// 'w': 'w200',
// });

// this.Super('init', arguments);
// },
// });
// exports.adCount = AdCount;

// // 多账号分配
// const DistributeMode = view.container.extend({
// init: function(config) {
// config = pubjs.conf(config, {
// 'class': 'P-batchCreateAdToutiaoPlanDistributeMode',
// 'vModel': {
// 'type': marketingRuleMap.distribute_mode, // 类型
// 'tips': LANG('') // 提示文字
// },
// 'items': Enum.getEnumData('distribute_mode').items
// });

// this.Super('init', arguments);
// },
// afterBuild: function() {
// const self = this;
// const c = self.getConfig();
// const el = self.getDOM();

// $([
// `
// <div class="M-formConGroup" v-show="true">
// <label class="group-label">
// <span class="font-danger mr5">*</span>
// <span>${LANG('多账号分配')}</span>
// </label>
// <div class="group-content" >
// <div pub-name="buttonGroup" pub-mod="@base/common/input.buttonGroup"></div>
// <div class="uk-text-muted mt10" v-show="false">{{tips}}</div>
// </div>
// </div>

// `
// ].join('')).appendTo(el);

// self.buildFromTemplate({
// 'buttonGroup': {
// 'class': 'P-batchCreateAdToutiaoBtnGroup',
// 'selected': self.vm.$.type,
// 'items': c.items
// }
// });

// self.vm.mount();
// },
// onChangeButton: function(ev) {
// const vm = this.vm.$;
// const type = ev.param.selected;
// vm.type = type;
// marketingRuleMap.distribute_mode = type;
// return false;
// },
// setData: function(data) {
// const self = this;
// const c = self.getConfig();
// const distribute_mode = data.distribute_mode || Enum.getDefualtVal(c.items);
// if (self.$.buttonGroup && distribute_mode) {
// self.$.buttonGroup.setValue(distribute_mode);
// self.vm.$.type = distribute_mode;
// }
// return self;
// },
// getData: function() {
// const self = this;
// const type = self.$.buttonGroup.getValue();
// const data = {
// distribute_mode: +type
// };
// return data;
// },
// validate: function(data) {
// const pass = true;
// return pass;
// init: function (config) {
// config = pubjs.conf(config, {
// class: 'P-batchCreateAdToutiaoPlanDistributeMode',
// vModel: {
// type: marketingRuleMap.distribute_mode, // 类型
// tips: LANG('') // 提示文字
// },
// labelText: '',
// fieldKey: 'data',
// items: Enum.getEnumData('distribute_mode').items,
// checkboxProps: {
// items: [],
// id: 'id',
// name: 'text',
// noLimitText: "多账号一致",
// noLimitDesc: "每个广告账户，都按定向包数*标题包数*素材组数生成广告"
// },
// format: (v) => Number(v),
// onChange: null,
// });

// this.Super('init', arguments);
// },
// afterBuild: function () {
// let self = this;
// let c = self.getConfig();
// let dom = self.getDOM();
// $(
// [
// `
// <div class="M-formConGroup" v-show="true">
//     <label class="group-label">
//         <span class="font-danger mr5">*</span>
//         <span>${LANG('多账号分配')}</span>
//     </label>
//     <div class="group-content" >
//         <div pub-name="buttonGroup" pub-mod="modules/buttonGroup.checkBoxButton"></div>
//     </div>
// </div>
// `,
// ].join(''),
// ).appendTo(dom);

// self.buildFromTemplate({
// buttonGroup: {
// addClass: 'P-batchCreateAdBtnGroup',
// ...c.checkboxProps,
// items: c.items,
// noLimitId: 1,
// },
// });
// self.vm.mount();
// },
// setData: function (data) {
// let self = this;
// const c = self.getConfig();
// let _data = [];

// if(_.isNumber(data['distribute_mode'])) {
// _data.push(data['distribute_mode'])
// }

// if(_.isArray(data['distribute_mode'])){
// _data = _data.concat(data['distribute_mode'])
// }

// if (Array.isArray(_data) && _data.length) {
// self.$.buttonGroup.setData(_data);
// }
// return self;
// },
// getData: function () {
// let self = this;
// const c = self.getConfig();
// let data = self.$.buttonGroup.getValue();
// if (data && (data.includes(-1) || data.includes('-1'))) {
// return {"distribute_mode": []};
// }
// if (c.format) {
// data = data.map(c.format);
// }

// return {"distribute_mode": data};
// },
// reset: function () {
// let self = this;
// this.vm.reset();
// this.$.buttonGroup.reset();
// return this;
// },
// validate: function (data) {
// let self = this;
// return true;
// },
// onChangeButton: function (ev) {
// let self = this;
// const c = self.getConfig();
// const data = this.getData()
// const _d = data[c.fieldKey] || []
// c.onChange && c.onChange(_d);
// return false;
// },
// setValue: function(selected) {
// var c = this.getConfig();
// c.selected = selected;
// // this.updateSelected();
// return this;
// },
// reset: function() {
// const self = this;
// self.vm.reset();
// if (this.$.buttonGroup) {
// this.$.buttonGroup.setValue(self.vm.$.type);
// }
// return self;
// }
// });
// exports.distributeMode = DistributeMode;
// });
// exports.distributeMode = DistributeMode;

// // 搜索快投 广告位置、投放形式、搜索快投关键词
// const DeliveryLocation = MarketingGoalMain.extend({
// init: function(config) {
// config = pubjs.conf(config, {
// 'class': 'P-batchCreateAdToutiaoExpNameMain',
// 'vModel': {
// 'showSearchBidRatio': false,
// 'type': 'HAS_OPEN', // 默认选中项
// },


/*
    账号 3个    定向包  8个    标题包  1个    素材组  2个    
    
    正常叉乘[1] 
    3 * 8 * 1 * 2 = 48个

    正常叉乘和以下选项互斥，以下选项可以单选，也可以多选

    按定向包分配[2]
        账号A：3个定向包、1个标题包、2个素材组 3 * 1 * 2 = 6个
        账号B：3个定向包、1个标题包、2个素材组 3 * 1 * 2 = 6个
        账号C：2个定向包、1个标题包、2个素材组 2 * 1 * 2 = 4个
        6 + 6 + 4 = 16个
    
    按标题包分配[3]
        账号A：8个定向包、1个标题包、2个素材组 8 * 1 * 2 = 16个
        账号B：8个定向包、1个标题包、2个素材组 8 * 1 * 2 = 16个
        账号C：8个定向包、1个标题包、2个素材组 8 * 1 * 2 = 16个
        16 + 16 + 16 = 48个

    按素材组分配[4]
        账号A：8个定向包、2个标题包、1个素材组 4 * 2 * 1 = 8个
        账号B：8个定向包、2个标题包、1个素材组 4 * 2 * 1 = 8个
        账号C：8个定向包、2个标题包、1个素材组 4 * 2 * 1 = 8个
        8 + 8 + 8 = 24个
    
    按定向包、标题包分配[2,3]
        账号A：3个定向包、1个标题包、2个素材组 3 * 1 * 2 = 6个
        账号B：3个定向包、1个标题包、2个素材组 3 * 1 * 2 = 6个
        账号C：2个定向包、1个标题包、2个素材组 2 * 1 * 2 = 2个
        6 + 6 + 2 = 14个
    
    按定向包、素材组分配[2,4]
        账号A：8个定向包、1个标题包、1个素材组 8 * 1 * 1 = 8个
        账号B：8个定向包、1个标题包、1个素材组 8 * 1 * 1 = 8个
        账号C：8个定向包、1个标题包、1个素材组 8 * 1 * 1 = 8个
        8 + 8 + 8 = 24个

    按标题包、素材组分配[3,4]
        账号A：8个定向包、1个标题包、1个素材组 8 * 1 * 1 = 8个
        账号B：8个定向包、1个标题包、1个素材组 8 * 1 * 1 = 8个
        账号C：8个定向包、1个标题包、1个素材组 8 * 1 * 1 = 8个
        8 + 8 + 8 = 24个

    按定向包、标题包、素材组分配[2,3,4]
        账号A：3个定向包、1个标题包、1个素材组 3 * 1 * 1 = 3个
        账号B：3个定向包、1个标题包、1个素材组 3 * 1 * 1 = 3个
        账号C：2个定向包、1个标题包、1个素材组 2 * 1 * 1 = 2个
        3 + 3 + 2 = 8个

    function getTTGroupOfMultiAccounts(accountLen, targetLen, titleLen, creativeLen, distributeMode) {
        // ...
    }
    getTTGroupOfMultiAccounts(3, 8, 1, 2, [1]) // 正常叉乘 48个
    getTTGroupOfMultiAccounts(3, 8, 1, 2, [2]) // 按定向包分配 16个
    getTTGroupOfMultiAccounts(3, 8, 1, 2, [3]) // 按标题包分配 48个
    getTTGroupOfMultiAccounts(3, 8, 1, 2, [4]) // 按素材组分配 24个
    getTTGroupOfMultiAccounts(3, 8, 1, 2, [2,3]) // 按定向包、标题包分配 14个
    getTTGroupOfMultiAccounts(3, 8, 1, 2, [2,4]) // 按定向包、素材组分配 24个
    getTTGroupOfMultiAccounts(3, 8, 1, 2, [3,4]) // 按标题包、素材组分配 24个
    getTTGroupOfMultiAccounts(3, 8, 1, 2, [2,3,4]) // 按定向包、标题包、素材组分配 8个

    设计一个函数 getTTGroupOfMultiAccounts，根据不同的分配模式，返回不同的广告组数，使用JavaScript代码

    需要注意
    如果是按定向包分配，需要确保每个账号都至少有一个定向包，哪怕定向包的数量少于账号的数量，所以得判断定向包的个数是否小于账号的个数，如果小于，则让每个账号的定向包数都为1
    如果定向包的个数大于账号的个数，比如定向包有5个，账号有3个，平均分配完剩下的2个定向包，按顺序分配给账号A和账号B
    按标题包分配和按素材组分配同理
 */

function getTTGroupOfMultiAccounts(accountLen, targetLen, titleLen, creativeLen, distributeMode) {

}